
create     FUNCTION fnCarteraXCobrarVigente(@IdDesarrollo varchar(3), 
	@FechaCorte DateTime, @Intercambio smallint)
RETURNS money
AS
BEGIN
   DECLARE @TotCartera money
   DECLARE @TotCarteraMens money
   DECLARE @TotCarteraMensP money
   DECLARE @TotCarteraEng money
   DECLARE @TotCarteraEngP money

--  ---------------------
--  No Son de Intercambio
--  ---------------------
If @Intercambio = 0
   BEGIN

   --  Mensualidades
   --  Cero dias vencidos (Cartera Documentada Sana)
   SET @TotCarteraMens = (Select Sum(DV.Mensualidad) as Total 
  	FROM DetVenta DV INNER JOIN Desarrollo D 
   	ON DV.CveLote = D.CveLote
   	WHERE D.CveDesarrollo = @IdDesarrollo
   	AND D.StaVenta='C' 
	and (D.Intercambio <> 'I' or D.Intercambio is null)
	AND DV.Vencimiento >= @FechaCorte)
   
   if @TotCarteraMens is null set @TotCarteraMens = 0

   SET @TotCarteraMensP = (Select Sum(P.Pago + P.Bonificacion + 
	P.BonificaInt + P.BonificaSeg + P.BonificaAdm - P.Recargo) as Pagos
  	FROM Ct_Pagos P INNER JOIN DetVenta DV 
	ON P.CveLote = DV.CveLote AND P.FechaVento = DV.Vencimiento
	INNER JOIN Desarrollo D 
   	ON DV.CveLote = D.CveLote
   	WHERE D.CveDesarrollo = @IdDesarrollo
   	AND D.StaVenta='C' 
	and (D.Intercambio <> 'I' or D.Intercambio is null)
	AND DV.Vencimiento >=  @FechaCorte
	AND P.FechaPago <= @FechaCorte)


   if @TotCarteraMensP is null set @TotCarteraMensP = 0
	

   --  	Enganches
   set @TotCarteraEng = (SELECT sum(Importe) as Total
   	FROM 	Enganches E INNER JOIN Desarrollo D 
   	ON 	E.CveLote = D.CveLote
	WHERE D.CveDesarrollo = @IdDesarrollo 
	---   and D.cvelote = 'FCS02A068'
	and D.StaVenta='C'
	and (D.Intercambio <> 'I' or D.Intercambio is null)
	And E.FechaVento >= @FechaCorte)

   if @TotCarteraEng is null set @TotCarteraEng = 0


   set @TotCarteraEngP = (SELECT sum(P.Pago + P.Bonificacion + 
	P.BonificacionInt - P.Recargo) as Total
   	FROM 	EnganchesPagos P INNER JOIN Enganches E 
	ON P.CveLote = E.CveLote and P.FechaVento = E.FechaVento 
	INNER JOIN Desarrollo D 
   	ON 	E.CveLote = D.CveLote
	WHERE D.CveDesarrollo = @IdDesarrollo 
	---   and D.cvelote = 'FCS02A068'
	and D.StaVenta='C'
	and (D.Intercambio <> 'I' or D.Intercambio is null)
	And E.FechaVento >= @FechaCorte
	AND P.FechaPago <= @FechaCorte)


   if @TotCarteraEngP is null set @TotCarteraEngP = 0

   END

ELSE   --   SI SON DE INTERCAMBIO 
   BEGIN

   --  Mensualidades
   --  Cero dias vencidos (Cartera Documentada Sana)
   SET @TotCarteraMens = (Select Sum(DV.Mensualidad) as Total 
  	FROM DetVenta DV INNER JOIN Desarrollo D 
   	ON DV.CveLote = D.CveLote
   	WHERE D.CveDesarrollo = @IdDesarrollo
   	AND D.StaVenta='C' 
	and D.Intercambio = 'I' 
	AND DV.Vencimiento >= @FechaCorte)
   
   if @TotCarteraMens is null set @TotCarteraMens = 0

   SET @TotCarteraMensP = (Select Sum(P.Pago + P.Bonificacion + 
	P.BonificaInt + P.BonificaSeg + P.BonificaAdm - P.Recargo) as Pagos
  	FROM Ct_Pagos P INNER JOIN DetVenta DV 
	ON P.CveLote = DV.CveLote AND P.FechaVento = DV.Vencimiento
	INNER JOIN Desarrollo D 
   	ON DV.CveLote = D.CveLote
   	WHERE D.CveDesarrollo = @IdDesarrollo
   	AND D.StaVenta='C' 
	and D.Intercambio = 'I' 
	AND DV.Vencimiento >=  @FechaCorte
	AND P.FechaPago <= @FechaCorte)


   if @TotCarteraMensP is null set @TotCarteraMensP = 0
	

   --  	Enganches
   set @TotCarteraEng = (SELECT sum(Importe) as Total
   	FROM 	Enganches E INNER JOIN Desarrollo D 
   	ON 	E.CveLote = D.CveLote
	WHERE D.CveDesarrollo = @IdDesarrollo 
	---   and D.cvelote = 'FCS02A068'
	and D.StaVenta='C'
	and D.Intercambio = 'I' 
	And E.FechaVento >= @FechaCorte)

   if @TotCarteraEng is null set @TotCarteraEng = 0


   set @TotCarteraEngP = (SELECT sum(P.Pago + P.Bonificacion + 
	P.BonificacionInt - P.Recargo) as Total
   	FROM 	EnganchesPagos P INNER JOIN Enganches E 
	ON P.CveLote = E.CveLote and P.FechaVento = E.FechaVento 
	INNER JOIN Desarrollo D 
   	ON 	E.CveLote = D.CveLote
	WHERE D.CveDesarrollo = @IdDesarrollo 
	and D.StaVenta='C'
	and D.Intercambio = 'I' 
	And E.FechaVento >= @FechaCorte
	AND P.FechaPago <= @FechaCorte)


   if @TotCarteraEngP is null set @TotCarteraEngP = 0

   END
	
   SET @TotCartera = @TotCarteraMens + @TotCarteraEng - 
	@TotCarteraMensP - @TotCarteraEngP
   return (@TotCartera)
END
GO
